package https

import (
	"sync"
	"time"
)

// 内建缓存组件
type cache struct{}

// 默认缓存值
var _default_cache map[string]string = map[string]string{}
var _default_cache_sync sync.RWMutex

// 获取缓存的值
//
//	name	缓存名称
func (c *cache) Get(name string) string {
	_default_cache_sync.RLock()
	defer _default_cache_sync.RUnlock()
	if v, ok := _default_cache[name]; ok {
		return v
	}
	return ""
}

// 设置缓存项的值
//
//	name	设置项名称
//	val		缓存项的值
//	t		缓存时间 -/0-不缓存
func (c *cache) Set(name string, val string, t time.Duration) {
	if t <= 0 {
		return
	}
	_default_cache_sync.Lock()
	defer _default_cache_sync.Unlock()
	_default_cache[name] = val
	go func(name string, t time.Duration) {
		timer := time.NewTimer(t)
		<-timer.C
		_default_cache_sync.Lock()
		defer _default_cache_sync.Unlock()
		delete(_default_cache, name)
	}(name, t)
}
